The present invention is directed to the digital imaging arts. It finds particular application to a method of color correction transformation for image processors and will be described with particular reference thereto. It is to be appreciated that the present invention can also be applied to any type of multidimensional transformation process including color space transformation, device calibration and characterization, color correction, and the like.
Computers and other electronic equipment typically depict color in 3-D coordinates such as RGB (Red, Green, Blue). Many printers, on the other hand, print in either three-dimensional colorant space, cyan, magenta, yellow (CMY) or four-dimensional colorant space, cyan, magenta, yellow, and black (CMYK) which correspond to the input values, e.g. RGB. Frequently, a device independent color space is used as an intermediate representation of the image. A common choice for such a device independent space is a luminance-chrominance space, denoted generically as LC1C2. The L component represents luminance or lightness, and C1 and C2 are the two chrominance axes representing, for example, red-green and yellow-blue variations, respectively. An example of such a space is CIELAB wherein luminance is designated by L* and the two chrominance coordinates are designated a* and b*. For example, translations are then derived from input RGB to LC1C2, and from LC1C2 to printer colorant space.
Transforms from one color space to another are known. For example, transformations from colorimetric RGB to printer RGB space, calorimetric RGB to printer CMY space, scanner RGB to calorimetric RGB space and so on have been accomplished. Such transformations are typically implemented through the use of 3-D look-up tables (LUT). The entries in the 3-D LUT are indexed with parameters or axes that are based on the axes of the input space. For example, a 3-D LUT has a red axis or index, a green index and a blue index. Inputs to these LUTs are typically axis values in the input color space or protocol and intersections or nodes typically contain axis values in the output color space.
For example, in the case of a LUT transform to translate color from a LC1C2 color space to a CMYK space of a printer, a predefined set of CMYK digital values are sent to the printer. The printer prints a corresponding set of color patches. The calibration color patches are measured and a colorimetric LC1C2 coordinate or set of axes values is determined for each patch, i.e. for each of the predefined CMYK values. Each of the measured LC1C2 coordinates then, identifies a three-dimensional vector location within the three-dimensional space. Each LC1C2 coordinate is typically represented by 8-bit values for each of the L, C1, and C2 components. Although such a 24-bit LC1C2 coordinate is capable of addressing over 16.77 million locations, the lookup table is typically partitioned into a smaller size, such as 16xc3x9716xc3x9716 (4096) table locations, each node of which stores a CMYK value. After the calibration patches are produced, each measured LC1C2 coordinate has a corresponding known CMYK value. Unfortunately, the input LC1C2 coordinates do not, in general, perfectly coincide with the node locations (i.e. the three dimensional intersection points) of the look-up table. Hence, the CMYK values placed at the nodes are estimated by some multidimensional data fitting technique such as Shepard""s algorithm.
CMYK values at intermediate LC1C2 points are determined by a form of interpolation among the LUT nodes. The size of the look-up table is a compromise between access speed and desired accuracy on the one hand (i.e. the fidelity of the output) and the expense of storing a large number of values on the other.
An illustration of the operation of a look-up table is instructive. Referring to FIG. 1, an input LC1C2 value is used to determine index values Lxe2x80x2, C1xe2x80x2, C2xe2x80x2 into the table 112. The index values are used to locate the color within the table. For example, the color is located a point 116 that does not coincide with any node locations 120. Therefore there is no transformation value directly available from the table 112 for converting the input value into a printer specific CMYK value. Instead, the conversion is accomplished by interpolating the known CMYK values corresponding to the nearest nodes 124 to the input LC1C2 coordinate location 116.
The color is defined in three dimensions. Therefore, the interpolation is similarly done in three dimensions. Common examples of 3-D interpolation techniques include trilinear, tetrahedral, and prism interpolation. Of these, tetrahedral interpolation is the fastest method, requiring interpolation only among 4 nodes. (The trilinear and prism schemes utilize 8 and 6 nodes, respectively.) All these techniques require several multiplication, addition, shift, and comparison operations for each output signal or axis value at each pixel; and are often implemented with special purpose hardware.
This interpolated CMYK value is then output and rendered, for example, by a printer. Unfortunately, three-dimensional interpolation presents a significant computational burden for many applications. Typically each axis describing a color space is represented by an 8-bit word. Therefore, each axis is divided into 256 levels. As mentioned above, where a color space is described by three such 8-bit axes, the color space comprises over 16.77 million different axis values or colors. Therefore, a pure look-up table transformation is prohibitively expensive in terms of memory requirements in some applications. It is for this reason that look-up table based transformations typically use look-up tables that include only a small fraction of the possible axes value combinations and use interpolation to approximate the unincluded values. Of course, the memory savings is paid for in computational time or degraded image quality. Therefore, a fast, computationally inexpensive method of color correction and color space transformations is needed which produces satisfactory image output quality.
To those ends, a fast, low cost method of color correction transformation has been developed. The method comprises the steps of selecting a first color space, wherein colors are defined by a first set of axes, selecting a second color space wherein colors are defined by a second set of axes, associating with each axis in the second set, a principal axis from the first set, the principal axis characterized by a predominating transformation relationship the principal axis has with the second set axis as compared to transformation relationships remaining (non-principal) first set axes have with the second set axis, and predetermining for each second set axis an associated set of tone reproduction curves describing the transformation relationship between the second set axis and the associated principal axis, wherein each tone reproduction curve in the set is calibrated in light of selected values of the non-principal first set axes, and wherein each curve in the set is indexed and referenced by the selected remaining first set axis values.
Some embodiments of the method further comprise the steps of accepting a color, described by first set axis values (from the first color space), for transformation into second set axis values (of the second color space), selecting a second set axis for determination, accessing the set of tone reproduction curves associated with the selected second set axis, determining selection indices based on the non-principal first set axis values, using the selection indices to select an appropriate tone reproduction curve from the accessed set, and using the principal axis as an index into the selected tone reproduction curve to determine a value for the selected second set axis.
The method is useful for transforming between a wide variety of spaces, including, for example RGB, CMY, CMYK, L*a*b*, CIELAB and other color spaces.
An image processor operative to perform the steps of the method comprises a library of transformation curves, the curves describing relationships between principal axes in a first color space to associated axes in a second color space, each curve describing the relationship given a unique set of values for remaining (non-principal) first color space axes and software stored in a computer memory and processed by a computational device. The software operates to; analyze a pixel describing a color in terms of a first color space; access curves in the curve library based on that analysis, and use the curves to generate a description of the color in terms of a second color space.
One advantage of the present invention resides in the speed with which it transforms an image from one color space to another.
Another advantage of the present invention is found in the low cost of computational devices that successfully perform the method.
Yet another advantage of the present invention is that any errors in image transformation introduced by the method are often masked by noise present in the image.
Still other advantages of the present invention will become apparent to those skilled in the art upon a reading and understanding of the detail description below.